/*
 * Copyright the original author or authors.
 * 
 * Licensed under the MOZILLA PUBLIC LICENSE, Version 1.1 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.mozilla.org/MPL/MPL-1.1.html
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
 
package com.airlogger.log.view.format
{
	import com.bourre.collection.HashMap;
	import com.airlogger.log.model.LogData;
	import flash.utils.getQualifiedClassName;
	
	public class SubObjectFormatter extends ObjectFormatter
	{
		public function SubObjectFormatter ( af : SubArrayFormatter = null )
		{
			super( false );
			map = new HashMap();
			map.put( "String", new StringFormatter() );
			map.put( "XML", new SubXMLFormatter() );
			map.put( "Object", this );
			map.put( "Default", new DefaultFormatter() );
			map.put( "Array", af ? af : new SubArrayFormatter ( this ) );
		}
		override public function format( data : LogData ):String
		{
			var s : String = data.type + " { <ul>";
			var o : Object = data.message as Object;
			
			for( var i : String in o )
			{
				s += "<li class='object closed'><b>" + i + " : </b>" + 
					 _format ( new LogData( data.level,
			 							    o[ i ],
			 							    data.date,
			 							    getQualifiedClassName( o[ i ] ) ) ) + 
					 "</li>";
			}
			
			s += "</ul> }";
			
			return s;
		}
	}
}